package nl.saxion.syntaxis.model;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TUI {
	
	private Syntaxis syntaxis = new Syntaxis(); 
	
	public static void main(String[] args) {
		try {
			new TUI();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public TUI() throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String s;
		System.out.println("Syntaxis. Toets menu voor de mogelijke acties");
		while ((s = in.readLine()) != null && s.length() != 0) {
			// Niet erg flexibel voor nieuwe commando's maar het is toch maar
			// een Proof of Concept
			String arr[] = s.split(" ", 3);
			String command = arr[0];

			if (command.equals("menu")) {
				printMenu();
			} else if (command.equals("nieuwlid")) {
				if (arr.length >= 2) {
					if(arr[2].equals("standaard")){
						int id = UIDGenerator.getInstance().getNext();
						syntaxis.addLidImpl(id, arr[1]);
						System.out.println("Lid toegevoegd");
					}else if(arr[2].equals("extern")){
						int id = UIDGenerator.getInstance().getNext();
						syntaxis.addExternLid(id, arr[1]);
						System.out.println("Lid toegevoegd");
					}else if(arr[2].equals("alumni")){
						int id = UIDGenerator.getInstance().getNext();
						syntaxis.addAlumniLid(id, arr[1]);
						System.out.println("Lid toegevoegd");
					}else if(arr[2].equals("actief")){
						int id = UIDGenerator.getInstance().getNext();
						syntaxis.addActiefLid(id, arr[1]);
						System.out.println("Lid toegevoegd");
					}
					else{
						System.out.println("ongeldig type");
					}
				} else {
					System.out.println("Voer argumenten in");
				}
			} else if(command.equals("overzichtleden")){
				syntaxis.printLeden();
			} else if(command.equals("zoeklid")){
				syntaxis.searchLidByName(arr[1]);
			}else {
				System.out
						.println("Onbekend commando, gebruik \"help\" voor een overzicht van de beschikbare commando's");
			}
		}
	}
	
	private void printMenu() {
		System.out.println("Menu:");
		System.out.println("- nieuwlid = voeg nieuw lid toe");
		System.out.println("\targumenten: lidnaam, type (standaard, extern, alumni, actief)");
		System.out.println("- overzichtleden = print overzicht van alle leden");
		System.out.println("- zoekalleleden = zoek alle leden op basis van naam");
		System.out.println("\targumenten: lidnaam");
		System.out.println("- zoeklid = zoek een lid op basis van naam");
		System.out.println("\targumenten: lidnaam");
	}
}
